package com.itheima.d5_generics;

import java.util.ArrayList;

/*
    1 泛型
         定义类、接口、方法时，同时声明了一个或者多个类型变量（如：<E>） ，称为泛型类、泛型接口，泛型方法、它们统称为泛型。
    2 作用：泛型提供了在编译阶段约束所能操作的数据类型，并自动进行检查的能力！这样可以避免强制类型转换，及其可能出现的异常。
    3 泛型的本质：把具体的数据类型作为参数传给类型变量。

 */
public class Test1 {
    public static void main(String[] args) {
        //创建集合（不带泛型）
        ArrayList list1 = new ArrayList();
        list1.add(100);
        list1.add("Java");
        //获取元素时，元素的类型是：Object
        Object obj = list1.get(1);
        String s  = (String) obj;//强制把Object类型变为String


        //创建集合（带泛型）  //泛型：指定了集合中只能存储String类型数据
        ArrayList<String> list2 = new ArrayList<>();
        list2.add("Java");
        //获取元素时，元素的类型为：String
        String str = list2.get(0);
    }
}




